//package com.slofzx.nuoda.evaluation.project.enums;
//
//import com.fasterxml.jackson.annotation.JsonFormat;
//import com.slofzx.nuoda.common.EnumConfig;
//import com.slofzx.nuoda.common.config.Type;
//import com.slofzx.nuoda.common.enums.DataFormatEnum;
//import com.slofzx.nuoda.custom.field.enums.UnitTypeEnum;
//import com.slofzx.nuoda.evaluation.project.vo.ProjectInfoVO;
//import com.slofzx.nuoda.evaluation.project.vo.ProjectYearDataVO;
//import org.apache.commons.collections4.CollectionUtils;
//
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.function.Function;
//
///**
// * 项目年份相关录入参数
// *
// * @author sunfuyong
// */
//@JsonFormat(shape = JsonFormat.Shape.OBJECT)
//@EnumConfig(id = "project-param", name = "项目参数", valueFormat = DataFormatEnum.JSON)
//public enum ProjectYearRelatedParamEnum implements ModelInputItem {
//
//    OUTPUT_WELL_OPEN_COUNT("output_well_open_count", "采出井开井数",ProjectYearDataVO::getOutputWellOpenCount),
//    INJECT_WELL_OPEN_COUNT("inject_well_open_count", "注入井开井数", ProjectYearDataVO::getInjectionWellOpenCount),
//    FIXED_PERSON("fixed_person", "新增定员", ProjectYearDataVO::getFixedPerson),
//    DRILL_EXTRACT_INVEST("drill_extract_invest", "钻采投资", ProjectYearDataVO::getDrillExtractInvest),
//    GROUND_INVEST("ground_invest", "地面投资", ProjectYearDataVO::getGroundInvest),
//    OTHER_INVEST("other_invest", "其他投资", ProjectYearDataVO::getOtherInvest),
//    PRODUCTION_RATE("production_rate", "生产时率", ProjectYearDataVO::getProductionRate),
//    WATER_INJECTION("water_injection", "注水量", ProjectYearDataVO::getWaterInjection),
//    STEAM_INJECTION("steam_injection", "注蒸汽量", ProjectYearDataVO::getSteamInjection),
//    LIQUID_OUTPUT("liquid_output", "产液量", ProjectYearDataVO::getLiquidOutput),
//    OIL_OUTPUT("oil_output", "原油产量", ProjectYearDataVO::getOilOutput),
//    GAS_OUTPUT("gas_output", "天然气产量", ProjectYearDataVO::getGasOutput),
//    CONDENSATE_OUTPUT("condensate_output", "轻烃产量", ProjectYearDataVO::getCondensateOutput),
//    LIQUID_GAS_OUTPUT("liquid_gas_output", "液化气产量", ProjectYearDataVO::getLiquidGasOutput),
//    DRUG_COST("drug_cost", "药剂费", ProjectYearDataVO::getDrugCost),
//    COST_RATIO("cost_ratio", "成本系数", ProjectYearDataVO::getCostRatio),
//    OUTPUT_RATIO("output_ratio", "产量系数", ProjectYearDataVO::getOutputRatio),
//    INVEST_RATIO("invest_ratio", "投资系数", ProjectYearDataVO::getInvestRatio),
//
//
//    ;
//
//    /**
//     * 数据类型id
//     */
//    private String id;
//    /**
//     * 数据类型展示名称
//     */
//    private String name;
//
//    /**
//     * 单位
//     */
//    private Type unit;
//    /**
//     * 关联的非年份相关列信息
//     */
//    private Function<ProjectYearDataVO, Object> column;
//
//
//    ProjectYearRelatedParamEnum(String id, String name, Function<ProjectYearDataVO, Object> column) {
//        this.id = id;
//        this.name = name;
//        this.column = column;
//    }
//
//    ProjectYearRelatedParamEnum(String id, String name, Function<ProjectYearDataVO, Object> column, Type unit) {
//        this.id = id;
//        this.name = name;
//        this.unit = unit;
//        this.column = column;
//    }
//
//
//    @Override
//    public String getId() {
//        return id;
//    }
//
//    /**
//     * 兼容可研存储编码
//     *
//     * @return
//     */
//    public String getCode() {
//        return id;
//    }
//
//    @Override
//    public String getName() {
//        return name;
//    }
//
//    public boolean isYearRelated() {
//        return true;
//    }
//
//    public String getDataType() {
//        return "number";
//    }
//
//    /**
//     * 获取实际值，如果是对减法则为有项目的实际值
//     *
//     * @param dataVO
//     * @return
//     */
//    public Object getRealValue(ProjectInfoVO dataVO) {
//        if (dataVO == null || dataVO.getYearDataList() == null || this.column == null) {
//            return null;
//        }
//        Map<Integer, String> dataMap = new HashMap<>();
//        final List<ProjectYearDataVO> yearDataList = dataVO.getYearDataList();
//        if (CollectionUtils.isEmpty(yearDataList)) {
//            return dataMap;
//        }
//        for (ProjectYearDataVO vo : yearDataList) {
//            Object value = this.column.apply(vo);
//            if (value != null) {
//                dataMap.put(vo.getYear(), value.toString());
//            }
//        }
//        return dataMap;
//    }
//
//    /**
//     * 获取对减法无项目实际值
//     *
//     * @param dataVO
//     * @return
//     */
//    public Object getNoProjectRealValue(ProjectInfoVO dataVO) {
//        //默认返回有项目对应值，如果有区别则重写
//        return getRealValue(dataVO);
//    }
//
//    /**
//     * 根据id获取对应的枚举
//     *
//     * @param id 枚举值的标识
//     * @return
//     */
//    public static ProjectYearRelatedParamEnum getEnum(String id) {
//        for (ProjectYearRelatedParamEnum dataTypeEnum : ProjectYearRelatedParamEnum.values()) {
//            if (dataTypeEnum.getId().equals(id)) {
//                return dataTypeEnum;
//            }
//        }
//        return null;
//    }
//
//    public String getUnit() {
//        if (unit == null) {
//            return null;
//        }
//        return unit.getId();
//    }
//}
